package main
import(
    "github.com/spf13/cobra"
    "fmt"
    "strings"
)

func main() {

//    var echoTimes int

	var cmdPrint = &cobra.Command{
		Use:   "print [string to print]",
		Short: "Print anything to the screen",
        Long:  `print is for printing anything back to the screen.
        For many years people have printed back to the screen.
        `,
		Run: func(cmd *cobra.Command, args []string) {
			fmt.Println("Print: " + strings.Join(args, " "))
		},
	}

	var cmdEcho = &cobra.Command{
		Use:   "echo [string to echo]",
		Short: "Echo anything to the screen",
        Long:  `echo is for echoing anything back.
        Echo works a lot like print, except it has a child command.
        `,
		Run: func(cmd *cobra.Command, args []string) {
			fmt.Println("Print: " + strings.Join(args, " "))
		},
	}

//	var cmdTimes = &cobra.Command{
//		Use:   "times [# times] [string to echo]",
//		Short: "Echo anything to the screen more times",
//        Long:  `echo things multiple times back to the user by providing
//        a count and a string.`,
//		Run: func(cmd *cobra.Command, args []string) {
//			for i:=0; i < echoTimes; i++ {
//				fmt.Println("Echo: " + strings.Join(args, " "))
//			}
//		},
//	}

//	cmdTimes().Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input")

	var rootCmd = &cobra.Command{Use: "app"}
	rootCmd.AddCommand(cmdPrint, cmdEcho)
//	cmdEcho.AddCommand(cmdTimes)
	rootCmd.Execute()
}